﻿using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using VisionCloud.Core.Model.Ms;
using VisionCloud.Domain.DtoModel.Ms;

namespace VisionCloud.Domain.Repository.Interface.Ms
{
    public interface IMsProjectStandardRepository : IBaseRepository<MsProjectStandard>
    {
        /// <summary>
        /// 根据阶段类型获取站点类型测量项
        /// </summary>
        /// <param name="projectStandardId">阶段UUID</param>
        /// <returns></returns>
        Task<List<MsProjectStandardMeasureItemDto>> GetListDetail(Guid projectStandardId);

        Task<MsProjectStandard> GetProjectStandard(Guid projectStandardId, Guid projectGuid);

        /// <summary>
        /// 获取模板信息
        /// </summary>
        /// <param name="projectIds"></param>
        /// <returns></returns>
        Task<List<MsProjectStandard>> GetDataByProjects(Guid[] projectIds);

        /// <summary>
        /// 作者：黄钧航
        /// 根据项目Id取对应标准库信息
        /// </summary>
        /// <param name="projectId">项目Id</param>
        /// <returns></returns>
        Task<List<StandardListModel>> GetProjectStandards(Guid projectId);

        /// <summary>
        /// 获取模板信息
        /// </summary>
        /// <param name="projectIds"></param>
        /// <param name="excludeStandard">需要过来项目阶段</param>
        /// <returns></returns>
        Task<List<MsProjectStandard>> GetDataByProjectsWithStandardId(Guid[] projectIds, Guid excludeStandard);

        /// <summary>
        /// 根据工程节点名称
        /// </summary>
        /// <param name="companyId">公司Id</param>
        /// <param name="projectId">项目Id</param>
        /// <param name="stageName">工程阶段名</param>
        /// <returns></returns>
        Task<MsProjectStandard> GetProjectStandardByName(Guid companyId, Guid projectId, string stageName);

        /// <summary>
        /// 同步项目标准库
        /// </summary>
        Task SyncProjectStandard(Guid projectId, Guid userId);
    }
}